Software developers use a variety of software tools when creating or modifying software programs. For example, an editor is a tool used to review and/or edit a program's source code. A source code analyzer is a tool used to check a program's source code for inconsistencies such as reading an uninitialized variable. A compiler is a tool used to translate a program's source code into executable code. A version controller is a tool used to manage different versions of source code, interpretable code, and/or executable code. A debugger is a tool used to test and debug other programs; debuggers often provide a view of the source code of the program that is being debugged. Developers also use other tools.
Sometimes software development tools are gathered into an Integrated Development Environment (IDE). An IDE is itself a software tool, which provides various other tools for software development in a coordinated manner. For example, a typical IDE includes at least a source code editor, a compiler and/or an interpreter, and a debugger. Some IDEs include a version controller, tools to automate building a complete program from libraries and other components, and/or tools to help create a graphical user interface. Some IDEs also have a class browser, an object inspector, and/or other tools designed specifically to help develop object oriented programs. IDEs are designed to improve developer productivity by providing coordinated tools that have similar user interfaces. An IDE may be tailored for use with a particular programming language, but some IDEs, such as the Microsoft® Visual Studio® Integrated Development Environment (marks of Microsoft Corporation), support development in several programming languages.
Source code and other editable information in documents is routinely changed, sometimes manually by a developer, and sometimes automatically by software. As a result, different versions of a document are often created. A tool may require access to a particular version of a document, or the tool may provide better results if the particular version is accessible. Accordingly, different tools may be required, or may at least be allowed, to simultaneously access different versions of a particular document.